/*
  模拟链表
  描述
    在图论题编程中，通常要运用邻接链表数据结构。
    由于动态指针比静态的数组的存取慢，很多OI选手就用数组模拟指针。
    现在就来学习一下这种方法的编程。

    有 N 个点,编号从 1 到 N。
    有 M 条边，每条边用连接的 2 个顶点表示，如:(3, 8)，表示顶点 3 和 8 之间的边(无向边)。
    请输出每个顶点通过边相邻的顶点。
  输入
    第 1 行，N 和 M 两个整数，N 范围在 [1 … 5000]，M 范围在 [1 … 100000]；
    下面有 M 行，每行两个整数，表示一条边。
  输出
    N行，第 i 行的第 1 个数 k 表示有多少边和 i 号顶点相连，后面有 k 个数，表示哪 k 个顶点和 i 连接为一条边。
  样例输入
    5 6
    1 3
    2 4
    1 4
    2 3
    3 5
    2 5
  样例输出
    2 4 3
    3 5 3 4
    3 5 2 1
    2 1 2
    2 2 3
*/